#ifndef __KEY_DRV_H__
#define __KEY_DRV_H__
#include "gd32f30x.h"
#include "led_drv.h"
#include "systick.h"
#include <stdio.h>

// 按键状态码
#define KEY1_SHORT_STATUS_CODE   0x01
#define KEY1_LONG_STATUS_CODE    0x81
#define KEY1_DOUBLE_STATUS_CODE  0x51
#define KEY2_SHORT_STATUS_CODE   0x02
#define KEY2_LONG_STATUS_CODE    0x82
#define KEY2_DOUBLE_STATUS_CODE  0x52
#define KEY3_SHORT_STATUS_CODE   0x03
#define KEY3_LONG_STATUS_CODE    0x83
#define KEY3_DOUBLE_STATUS_CODE  0x53

// 时间窗口
#define CONFIRM_TIME 10     // 按下确认10ms
#define LONGPRESS_TIME 1000 // 长按1000ms
#define DOUBLE_TIME 300     // 两次按下的时间窗300ms

/**
 * @desc  : 按键初始化
 * @date  : 2025-03-25
 * @author: AnRui
 * @note  :
 */
void KeyDrvInit(void);

/**
 * @desc  : 获取按键当前状态码
 * @date  : 2025-03-25
 * @author: AnRui
 * @return: 三个按键码值，短按0x01 0x02 0x03，
            长按0x81 0x82 0x83，没有按下为0
 * @note  :
 */
uint8_t GetKeyStatusCode(void);


#endif // __KEY_DRV_H__
